package xin.workflow.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <pre>
 * Activiti DTO
 * </pre>
 *
 * @author lixin_ma@outlook.com
 * @version 1.0
 * @since 2018/12/20
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class ActivitiDto implements Serializable {

    /**
     * 任务编号
     */
    private String taskId;
    
    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 任务定义Key（任务环节标识）
     */
    private String taskDefKey; 

    /**
     * 流程实例ID
     */
    private String procInsId; 
    
    /**
     * 流程定义ID
     */
    private String procDefId; 
   
    /**
     * 流程定义Key（流程定义标识）
     */
    private String procDefKey; 
    
    /**
     * 业务绑定Table
     */
    private String businessTable;

    /**
     * 业务绑定ID
     */
    private String businessId;	

    /**
     * 任务标题
     */
    private String title; 	

    /**
     * 任务状态
     */
    private String status; 	

    /**
     * 流程执行（办理）RUL
     */
    private String procExecUrl; 

    /**
     * 任务意见
     */
    private String comment; 

    /**
     * 意见状态
     */
    private String flag; 	

    /**
     * 任务对象
     */
    private Task task; 		

    /**
     * 流程定义对象
     */
    private ProcessDefinition procDef; 

    /**
     * 流程实例对象
     */
    private ProcessInstance procIns;

    /**
     * 历史任务
     */
    private HistoricTaskInstance histTask;

    /**
     * 历史活动任务
     */
    private HistoricActivityInstance histIns;

    /**
     * 任务执行人编号
     */
    private String assignee;

    /**
     * 任务执行人名称
     */
    private String assigneeName;

    /**
     * 流程变量
     */
    private Variable vars; 	

    /**
     * 流程任务变量
     */
    private Variable taskVars; 
    /**
     * 开始查询日期
     */
    private Date beginDate;

    /**
     * 结束查询日期
     */ 
    private Date endDate;

    /**
     * 任务列表
     */
    private List<ActivitiDto> list;
}
